# -!- coding: utf-8 -!-
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
民易贷流程图
#文件：flowMyds.py
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

channel_status = '0'            # 流量渠道方控制：0-正常，1-关闭(此外开放时间控制、流量总数控制-确认是否授信申请数量吗？)
code = '123456'
phone = '13000000001'           # 判断是否为新手机号客户13000000000
idCard = '322222129900034316'   # 判断是否为新身份证号客户322222129900034315
bind_phone = '13000000002'      # 判断绑定的银行预留手机号13000000000
rule_node = '999'               # 规则节点：999-授信成功
phone_node = '3'                # 节点：0-未授信成功、授信拒绝，1-已获取额度，2-已借款成功，3-已还款成功、授信额度失效
idCard_node = '1'               # 节点：0-未授信成功、授信拒绝，1-已获取额度，2-已借款成功，3-已还款成功、授信额度失效
bind_status = 'S'               # 绑卡状态：S-成功，F-失败
contract_status = 'S'           # 合同签署：S-成功，F-失败
pay_status = 'S'                # 支付状态：S-成功，F-失败


def flow_income():
    print('通过流量渠道方跳转到H5引导页面,客户点击【抢先申请】按钮！')
    print('调用接口从流量统计的数据库表对比myd_app_channel,判断渠道是否被关闭?')
    print('数据库后台按流量渠道方存储访问记录！')
    if channel_status=='0':
        print('流量渠道方开启状态，进入到登陆页面！')
        flow_login()
    elif channel_status=='1':
        print('浮窗提示“当日申请名额已满”！')


def flow_login():
    print('输入手机号，获取验证码，同意《服务协议》、《个人信息采集授权书》、《用户注册协议》进行登陆！')
    print('从myd_app_sms_record判断手机号是否可以获取验证码？并且更新记录')
    if code == '123456' and phone == '13000000000' and phone_node == '0':
        print('存量客户登陆成功，进入到身份信息页面！')
        flow_ocr()
    elif code == '123456' and phone == '13000000000' and phone_node=='1':
        #print('该手机号用户已有授信额度，判断登陆手机号与预留手机号是否一致？')
        flow_loan()
    elif code == '123456' and phone == '13000000000' and phone_node=='2':
        print('该手机号用户已放款成功，留意还款日按时还款！')
        print('自动代扣还款，无法再次申请......')
    elif code == '123456' and phone == '13000000000' and phone_node=='3':
        print('该手机号用户已结清，进入到身份信息页面！')
        print('该手机号用户重新进行OCR，无法更改身份证！')
        bindPhone()
    elif code == '123456' and phone != '13000000000':
        print('在数据库myd_app_user创建新客户，登陆成功进入到身份信息页面！！')
        flow_ocr()
    elif code != '123456':
        print('登陆失败！')


def flow_ocr():
    print('进行OCR识别,并存储记录到身份证OCR信息表：myd_app_idcard_ocr')
    print('OCR识别成功,弹窗提示“请确认 您提供的身份证件信息是本人信息且识别正确，以确保业务正常办理”，点击下一步！')
    print("通过appsvr到征信平台调用天创-运营商三要素验证接口!")
    print("征信平台记录三要素验证信息!")
    print("运营商三要素验证成功，存入数据到数据库表myd_app_mobile_verify!")
    if idCard == '322222129900034315' and idCard_node == '0':
        print('该身份证已进行过OCR识别，但未授信成功!')
        flow_info()
    elif idCard == '322222129900034315' and idCard_node == '1':
        print('该身份证用户已有授信额度，判断当前登陆手机号是否为其关联银行卡的预留手机号码?')
        if phone==bind_phone:
            print('该手机号用户与预留手机号一致，进入到借款申请页面！')
            flow_loan()
        else:
            print('该手机号用户与预留手机号不一致，进行运营商三要素的认证！')
            flow_bindCard()
    elif idCard == '322222129900034315' and idCard_node == '2':
        print('该身份证用户已放款成功，留意还款日按时还款！')
        print('自动代扣还款，无法再次申请......')
    elif idCard == '322222129900034315' and idCard_node == '3':
        print('该身份证用户已结清，重新进行OCR识别，身份证不能更改！')
        flow_info()
    elif idCard != '322222129900034315':
        print('该身份证为全新客户!')
        flow_info()


def bindPhone():
    if phone == bind_phone and phone_node=='1':
        print('该手机号用户与预留手机号一致，进入到借款申请页面！')
        flow_loan()
    elif phone == bind_phone and idCard_node=='1':
        print('该手机号用户与预留手机号一致，进入到借款申请页面！')
        flow_loan()
    else:
        print('该手机号用户与预留手机号不一致，重新进行绑卡操作！')
        flow_bindCard()


def flow_info():
    print('开始进行活体认证,新增上送身份证照片到融360!')
    print('活体认证成功，保存活体视频到阿里云，保存融360截取的图片到阿里云!')
    print('个人婚姻状态和居住信息填写成功!')
    print('个人直系亲属联系人和其他联系人填写成功!')
    if (phone == '13000000000' and phone_node=='3') or (idCard == '322222129900034315' and idCard_node == '3'):
        rule_commit()
    else:
        flow_bindCard()

def flow_bindCard():
    print('输入支持放款的银行卡号，银行预留手机号返显当前登陆手机号，可以更改!')
    print('获取验证码，同意《还款协议》后确认申请并提交！')
    print('调用易宝银行卡四要素认证接口！')
    if bind_status == 'S':
        print('银行卡绑卡成功，记录用户编号、身份证号、卡号、预留手机号到数据库表：绑定银行卡信息表!')
        rule_commit()
    elif bind_status == 'F':
        print('银行卡绑卡失败，授信失败')

def rule_commit():
    print('提交进件信息，调用进件接口保存进件信息、埋点信息')
    print('百行征信申请信息开始推送到报送平台，并报送到百行！')
    print('额度审批中......')
    flow_rule()

# 规则引擎节点流程
def flow_rule():
    flow = {
        "1":"黑名系统",
        #"2": "大数据平台",
        "3": "百行征信-百行征信报告",
        "4": "百融-特殊名单校验",
        "5": "腾讯云-天御反欺诈",
        "6": "TalkingData-欺诈风险侦测",
        "7":"同盾-贷前审查",
        "8": "百融-手机在网状态、时长及消费档次",
        "999": "授信成功",
    }
    for rule in flow:
        if rule==rule_node:
            if rule=='999':
                print('调用规则引擎所有节点成功，授信成功！')
                flow_loan()
            else:
                print('调用' + flow[rule] + '命中规则,授信失败！')
            break
        print('调用'+flow[rule]+'未命中规则,流程继续！')

def flow_loan():
    print('输入借款金额，选择期数，选择借款用途进行请款！')
    print('获取验证码，同意《借款协议》、《担保协议》后确认借款！')
    print('提交借款申请到数据库，并进行合同签署流程......')
    if contract_status == 'S':
        print('合同签署成功，进行易宝支付流程......')
        if pay_status == 'S' :
            print('易宝支付成功，客户收到钱！')
            print('百行征信账户信息(放款)开始推送到报送平台，并报送到百行！')
            print('合同信息开始推送到报送平台，并报送到金融局！')
            print('放款信息开始推送到报送平台，并报送到金融局！')
            flow_repay()
        elif pay_status == 'F' :
            print('支付失败，放款失败流程结束！')
    elif contract_status == 'F':
        print('合同签署失败，放款失败流程结束！')


def flow_repay():
    print('借款到期后，自动进行代扣，自动任务跑批处理当天到期的还款！')
    print('百行征信还款信息开始推送到报送平台，并报送到百行！')
    print('还款信息开始推送到报送平台，并报送到金融局！')
    print('日结信息开始推送到报送平台，并报送到金融局！')
    print('计提信息开始推送到报送平台，并报送到金融局！')


def flow():
    flow_income()


if __name__ == '__main__':
    flow()
    #flow_point()